home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / nls.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  2KB  |  65 lines

  1. #ifndef _LINUX_NLS_H
  2. #define _LINUX_NLS_H
  3.  
  4. #include <linux/init.h>
  5.  
  6. /* unicode character */
  7. typedef __u16 wchar_t;
  8.  
  9. struct nls_table {
  10.     char *charset;
  11.     char *alias;
  12.     int (*uni2char) (wchar_t uni, unsigned char *out, int boundlen);
  13.     int (*char2uni) (const unsigned char *rawstring, int boundlen,
  14.              wchar_t *uni);
  15.     unsigned char *charset2lower;
  16.     unsigned char *charset2upper;
  17.     struct module *owner;
  18.     struct nls_table *next;
  19. };
  20.  
  21. /* this value hold the maximum octet of charset */
  22. #define NLS_MAX_CHARSET_SIZE 6 /* for UTF-8 */
  23.  
  24. /* nls.c */
  25. extern int register_nls(struct nls_table *);
  26. extern int unregister_nls(struct nls_table *);
  27. extern struct nls_table *load_nls(char *);
  28. extern void unload_nls(struct nls_table *);
  29. extern struct nls_table *load_nls_default(void);
  30.  
  31. extern int utf8_mbtowc(wchar_t *, const __u8 *, int);
  32. extern int utf8_mbstowcs(wchar_t *, const __u8 *, int);
  33. extern int utf8_wctomb(__u8 *, wchar_t, int);
  34. extern int utf8_wcstombs(__u8 *, const wchar_t *, int);
  35.  
  36. static inline unsigned char nls_tolower(struct nls_table *t, unsigned char c)
  37. {
  38.     unsigned char nc = t->charset2lower[c];
  39.  
  40.     return nc ? nc : c;
  41. }
  42.  
  43. static inline unsigned char nls_toupper(struct nls_table *t, unsigned char c)
  44. {
  45.     unsigned char nc = t->charset2upper[c];
  46.  
  47.     return nc ? nc : c;
  48. }
  49.  
  50. static inline int nls_strnicmp(struct nls_table *t, const unsigned char *s1,
  51.         const unsigned char *s2, int len)
  52. {
  53.     while (len--) {
  54.         if (nls_tolower(t, *s1++) != nls_tolower(t, *s2++))
  55.             return 1;
  56.     }
  57.  
  58.     return 0;
  59. }
  60.  
  61. #define MODULE_ALIAS_NLS(name)    MODULE_ALIAS("nls_" __stringify(name))
  62.  
  63. #endif /* _LINUX_NLS_H */
  64.  
  65.